package com.project.sianet.entidades;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import android.os.Parcel;
import android.os.Parcelable;


@JsonIgnoreProperties(ignoreUnknown=true)
public class Mensaje implements Parcelable {

	private int mailCodigo;
	private String mailDe, mailCodigoDe;
	private String mailPara, mailCodigoPara;
	private String mailAsunto;
	private String mailDetalle;
	private Date mailFecha;
	private Boolean mailLeido, mailRespondido;
	private int mailRpta;
	private String mailMovilID;
	private String mailConCopia;
	public String mailArchivo;
	public List<String> mailArchivos;
	
	public Mensaje() {}
	
	public Mensaje(int mailCodigo, String mailDe, String mailCodigoDe, String mailPara, String mailCodigoPara, String mailAsunto, String mailDetalle, Date mailFecha, 
			Boolean mailLeido, int mailRpta, Boolean mailRespondido, String mailMovilID, String mailConCopia, String mailArchivo, List<String> mailArchivos) {

		this.mailCodigo = mailCodigo;
		this.mailDe = mailDe;
		this.mailCodigoDe = mailCodigoDe;
		this.mailPara = mailPara;
		this.mailCodigoPara = mailCodigoPara;
		this.mailAsunto = mailAsunto;
		this.mailDetalle = mailDetalle;
		this.mailFecha = mailFecha == null ? new Date() : mailFecha;
		this.mailLeido = mailLeido;
		this.mailRpta = mailRpta;
		this.mailRespondido = mailRespondido;
		this.mailMovilID = mailMovilID;
		this.mailConCopia = mailConCopia;
		this.mailArchivo = mailArchivo;
		this.mailArchivos = mailArchivos;
		
	}
	
	@JsonProperty("Archivos")
	public List<String> getMailArchivos() {
		return mailArchivos;
	}

	@JsonProperty("Archivos")
	public void setMailArchivos(List<String> mailArchivos) {
		this.mailArchivos = mailArchivos;
	}
	
	@JsonProperty("Archivo")
	public String getMailArchivo() {
		return mailArchivo;
	}

	@JsonProperty("Archivo")
	public void setMailArchivo(String mailArchivo) {
		this.mailArchivo = mailArchivo;
	}
	
	@JsonProperty("ConCopia")
	public String getMailConCopia() {
		return mailConCopia;
	}

	@JsonProperty("ConCopia")
	public void setMailConCopia(String mailConCopia) {
		this.mailConCopia = mailConCopia;
	}
	
	@JsonProperty("CodigoDe")
	public String getMailCodigoDe() {
		return mailCodigoDe;
	}

	@JsonProperty("CodigoDe")
	public void setMailCodigoDe(String mailCodigoDe) {
		this.mailCodigoDe = mailCodigoDe;
	}

	@JsonProperty("CodigoPara")
	public String getMailCodigoPara() {
		return mailCodigoPara;
	}

	@JsonProperty("CodigoPara")
	public void setMailCodigoPara(String mailCodigoPara) {
		this.mailCodigoPara = mailCodigoPara;
	}

	@JsonProperty("Respondido")
	public Boolean getMailRespondido() {
		return mailRespondido;
	}

	@JsonProperty("Respondido")
	public void setMailRespondido(Boolean mailRespondido) {
		this.mailRespondido = mailRespondido;
	}

	@JsonProperty("Fecha")
	public Date getMailFecha() {
		return mailFecha;
	}

	@JsonProperty("Fecha")
	public void setMailFecha(Date mailFecha) {
		this.mailFecha = mailFecha;
	}

	@JsonProperty("Codigo")
	public int getMailCodigo() {
		return mailCodigo;
	}

	@JsonProperty("Codigo")
	public void setMailCodigo(int mailCodigo) {
		this.mailCodigo = mailCodigo;
	}

	@JsonProperty("De")
	public String getMailDe() {
		return mailDe;
	}

	@JsonProperty("De")
	public void setMailDe(String mailDe) {
		this.mailDe = mailDe;
	}

	@JsonProperty("Para")
	public String getMailPara() {
		return mailPara;
	}

	@JsonProperty("Para")
	public void setMailPara(String mailPara) {
		this.mailPara = mailPara;
	}

	@JsonProperty("Asunto")
	public String getMailAsunto() {
		return mailAsunto;
	}

	@JsonProperty("Asunto")
	public void setMailAsunto(String mailAsunto) {
		this.mailAsunto = mailAsunto;
	}

	@JsonProperty("Cuerpo")
	public String getMailDetalle() {
		return mailDetalle;
	}

	@JsonProperty("Cuerpo")
	public void setMailDetalle(String mailDetalle) {
		this.mailDetalle = mailDetalle;
	}

	@JsonProperty("Leido")
	public Boolean getMailLeido() {
		return mailLeido;
	}

	@JsonProperty("Leido")
	public void setMailLeido(Boolean mailLeido) {
		this.mailLeido = mailLeido;
	}

	@JsonProperty("Respuesta")
	public int getMailRpta() {
		return mailRpta;
	}

	@JsonProperty("Respuesta")
	public void setMailRpta(int mailRpta) {
		this.mailRpta = mailRpta;
	}

	@JsonProperty("CodigoMovil")
	public String getMailMovilID() {
		return mailMovilID;
	}

	@JsonProperty("CodigoMovil")
	public void setMailMovilID(String mailMovilID) {
		this.mailMovilID = mailMovilID;
	}
	
	public List<String> Copia() {
		List<String> list = new ArrayList<String>();
		
		for (String word : this.mailConCopia.split("<string>")) {
			if (word.contains("</string>")) {
				String cod = word.substring(0, word.indexOf("</string>")).replace('|', ':');
				list.add(cod.contains(":") ? cod.split(":")[0] : cod);
			}
		}

		return list;
	}
	
	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeInt(mailCodigo);
		out.writeString(mailDe);
		out.writeString(mailCodigoDe);
		out.writeString(mailPara);
		out.writeString(mailCodigoPara);
		out.writeString(mailAsunto);
		out.writeString(mailDetalle);
		out.writeLong(mailFecha.getTime());
		out.writeByte((byte) (mailLeido ? 1 : 0));
		out.writeByte((byte) (mailRespondido ? 1 : 0));
		out.writeInt(mailRpta);
		out.writeString(mailMovilID);
		out.writeString(mailConCopia);
		out.writeString(mailArchivo);
		out.writeArray(mailArchivos.toArray());
	}
	
	public static final Parcelable.Creator<Mensaje> CREATOR = new Parcelable.Creator<Mensaje>() {
		public Mensaje createFromParcel(Parcel in) {
		    return new Mensaje(in);
		}
		
		public Mensaje[] newArray(int size) {
		    return new Mensaje[size];
		}
	};
	
	@SuppressWarnings("unchecked")
	private Mensaje(Parcel in) {
		mailCodigo = in.readInt();
		mailDe = in.readString();
		mailCodigoDe = in.readString();
		mailPara = in.readString();
		mailCodigoPara = in.readString();
		mailAsunto = in.readString();
		mailDetalle = in.readString();
		mailFecha = new Date(in.readLong());
		mailLeido = in.readByte() != 0;
		mailRespondido = in.readByte() != 0; 
		mailRpta = in.readInt();
		mailMovilID = in.readString();
		mailConCopia = in.readString();
		mailArchivo = in.readString();
		mailArchivos = in.readArrayList(String.class.getClassLoader());
    }
	
}
